bitkeeper revision 1.1159.258.60 (423a9ce2eJtKIkEGHQPPRXvkPvoHqQ)
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 18 Mar 2005 09:18:26 +0000 (09:18 +0000)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Fri, 18 Mar 2005 09:18:26 +0000 (09:18 +0000)
Check kmalloc return value in vbd code.
Signed-off-by: Keir Fraser <keir@xensource.com>
linux-2.6.11-xen-sparse/drivers/xen/blkfront/vbd.c

index 95f2bd4b3b6cfa295368b75eae37111dc3c479c6..f9265e74ec9e428f413f3264192533d584781350 100644 (file)
@@ -496,21 +496,16 @@ int xlvbd_init(void)
 {
     int i;
 
-    /*
-     * If compiled as a module, we don't support unloading yet. We
-     * therefore permanently increment the reference count to
-     * disallow it.
-     */
-    /* MOD_INC_USE_COUNT; */
-
     memset(major_info, 0, sizeof(major_info));
 
-    for (i = 0; i < sizeof(major_info) / sizeof(major_info[0]); i++) {
+    vbd_info = kmalloc(MAX_VBDS * sizeof(vdisk_t), GFP_KERNEL);
+    if (vbd_info == NULL) {
+        printk(KERN_ALERT "Failed to allocate memory for disk info.\n");
+        nr_vbds = 0;
+        return 0;
     }
 
-    vbd_info = kmalloc(MAX_VBDS * sizeof(vdisk_t), GFP_KERNEL);
     nr_vbds  = xlvbd_get_vbd_info(vbd_info);
-
     if (nr_vbds < 0) {
         kfree(vbd_info);
         vbd_info = NULL;